home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 6
/
FM Towns Free Software Collection 6.iso
/
t_os
/
keytype
/
keytype.bas
next >
Wrap
BASIC Source File
|
1993-07-08
|
7KB
|
146 lines
10 '*********************************************************
20 ' JISキーボード速打ち練習 V0.5 L3
30 ' 1991.10. 7~1993. 2.10 (C) おこめ
40 '*********************************************************
50 'データは最後にあるよ
60 '辞全R英小 辞全R英大 辞全Rかな 辞全Rカナ
70 '辞全 英小 辞全 英大 辞全 かな 辞全 カナ
80 '辞 R英小 辞 R英大 辞 Rかな 辞 Rカナ
90 '辞 英小 辞 英大 辞 かな 辞 カナ
100 ' 全R英小 全R英大 全Rかな 全Rカナ V2.1
110 ' 全 英小 全 英大 全 かな 全 カナ V2.1
120 ' R英小 R英大 Rかな Rカナ
130 ' 英小 英大 かな カナ
140 CLEAR ,,512,100000,0:DEFINT A-Z
150 COLOR 7,0,7,4:WIDTH 80,25:CONSOLE 14,10,2
160 SCREEN@2:CLS:SP=10
170 DIM X(262),Y(262),X2(262),Y2(262),M(1000),M2(1000),HK(255),KH$(255)
180 DIM TY(100),MD$(10)
190 PALETTE 1,[127,127,127],1
200 PALETTE 2,[0,0,255],1
210 LINE(0,0)-(639,260),PSET,%2,BF
220 FOR I=3 TO 255
230 PALETTE I,[I,255,I]:NEXT
240 READ A$:IF A$<>"" THEN KH$(ASC(A$))=MID$(A$,2):HK(ASC(MID$(A$,3)))=ASC(A$):GOTO 240
250 FOR M=0 TO 1
260 FOR J=0 TO 3:READ A,K
270 IF M THEN 290
280 LINE(50,70+J*32)-(530,102+J*32),PSET,0,BF,%1
290 FOR I=0 TO A
300 IF M THEN 320
310 LINE(I*32+K,70+J*32)-STEP(32,32),PSET,0,BF,7
320 READ L
330 X(L)=I*32+K:Y(L)=70+J*32:X2(L)=32:Y2(L)=32
340 IF M THEN 360
350 SYMBOL(X(L)+M*16+2,Y(L)+M*8+9),AKCNV$(CHR$(L)),1,1,0:GOTO 370
360 SYMBOL(X(L)+M*16+2,Y(L)+M*8+9),KH$(L),1,1,0
370 NEXT I,J,M
380 FOR I=0 TO 9
390 READ MD$(I)
400 NEXT
410 LINE(50,198)-(530,230),PSET,0,BF,%1
420 X(32)=194:Y(32)=198:X2(32)=160:Y2(32)=32
430 X(13)=490:Y(13)=102:X2(13)=40:Y2(13)=64
440 X(257)=146:Y(257)=198:X2(257)=48:Y2(257)=32 'CAP
450 X(258)=50:Y(258)=198:X2(258)=48:Y2(258)=32 'ひらがな
460 X(259)=410:Y(259)=198:X2(259)=72:Y2(259)=32 'カタカナ
470 X(260)=545:Y(260)=75:X2(260)=32:Y2(260)=32 '半角/全角
480 X(261)=354:Y(261)=198:X2(261)=56:Y2(261)=32 'かな漢字
490 X(262)=50:Y(262)=134:X2(262)=56:Y2(262)=32 'CTRL
500 DATA ヌぬ,フふ,アあ,ウう,エえ,オお,ヤや,ユゆ,ヨよ,ワわ,ホほ,ヘへ,ーー
510 DATA タた,テて,イい,スす,カか,ンん,ナな,ニに,ラら,セせ,゙゛,゚゜
520 DATA チち,トと,シし,ハは,キき,クく,マま,ノの,リり,レれ,ケけ,ムむ
530 DATA ツつ,サさ,ソそ,ヒひ,コこ,ミみ,モも,ネね,ルる,メめ,ロろ
540 DATA ァぁ,ゥぅ,ェぇ,ォぉ,ャゃ,ュゅ,ョょ,ヲを
550 DATA ィぃ,「「,」」,ッっ,、、,。。,・・,""
560 DATA 12,82,49,50,51,52,53,54,55,56,57,48,45,94,92
570 DATA 11,98,81,87,69,82,84,89,85,73,79,80,64,91
580 DATA 11,106,65,83,68,70,71,72,74,75,76,59,58,93
590 DATA 10,122,90,88,67,86,66,78,77,44,46,47,34
600 DATA 12,82,199,204,177,179,180,181,212,213,214,220,206,205,176
610 DATA 11,98,192,195,178,189,182,221,197,198,215,190,222,223
620 DATA 11,106,193,196,188,202,183,184,207,201,216,218,185,209
630 DATA 10,122,194,187,191,203,186,208,211,200,217,210,219
640 DATA " ","辞"," ","全"," ","R","英小","英大","カナ","かな"
650 LINE(X(32),Y(32))-STEP(X2(32),Y2(32)),PSET,0,B
660 LINE(X(13),Y(13))-STEP(X2(13),Y2(13)),PSET,0,BF,%1
670 LINE(X(257),Y(257))-STEP(X2(257),Y2(257)),PSET,0,BF,%1
680 LINE(98,198)-STEP(96,32),PSET,0,B
690 LINE(410,198)-STEP(72,32),PSET,0,B
700 LINE(210,150)-STEP(16,2),PASTEL,0,BF
710 LINE(306,150)-STEP(16,2),PASTEL,0,BF
720 SYMBOL(53,79),"ESC",1,1,0,,,1
730 SYMBOL(61,111),"TAB",1,1,0,,,1
740 SYMBOL(61,143),"CTRL",1,1,0,,,1
750 SYMBOL(65,175),"SHIFT",1,1,0,,,1
760 SYMBOL(507,79),"←",1,1,%1,,,8
770 SYMBOL(483,175),"SHIFT",1,1,0,,,1
780 SYMBOL(54,207),"ひらがな",.6!,1,0,,,1
790 SYMBOL(109,207),"ALT",1,1,0,,,1
800 SYMBOL(157,207),"CAP",1,1,0,,,1
810 SYMBOL(367,201),"かな",1,.9!,0,,,1
820 SYMBOL(367,215),"漢字",1,.9!,0,,,1
830 SYMBOL(415,207),"カタカナ",1,1,0,,,1
840 SYMBOL(491,207),"取消",1,1,0,,,1
850 READ A$:IF A$="" THEN SP=SP-1:RESTORE 850:IF SP=0 THEN END ELSE 850
860 LOCATE 10,CSRLIN:PRINT A$:LOCATE 10,CSRLIN
870 '文字コード判別
880 I=ASC(A$)
890 IF I<&H20 OR I=&H7F THEN 1000
900 IF I=&H20 THEN MD=8:MD2=0:GOTO *MODES
910 IF I>&H20 AND I<&H41 THEN MD=10:MD2=0:GOTO *MODES
920 IF I>&H40 AND I<&H5B THEN MD=11:MD2=1:GOTO *MODES
930 IF I>&H5A AND I<&H61 THEN MD=10:MD2=0:GOTO *MODES
940 IF I>&H60 AND I<&H7B THEN MD=11:MD2=0:GOTO *MODES
950 IF I>&H7A AND I<&H7F THEN MD=10:MD2=0:GOTO *MODES
960 IF I>&H7F AND I<&HA0 THEN MD=24:MD2=24:GOTO *MODES
970 IF I>&H9F AND I<&HE0 THEN MD=15:MD2=2:GOTO *MODES
980 IF I>&HDF THEN MD=24:MD2=24:GOTO *MODES
990 *MODES IF (KAM AND MD)<>MD2 THEN GOSUB *KMODE
1000 IF I>&H60 AND I<&H7B THEN C$=CHR$(I-32) ELSE C$=A$
1010 LINE(X(ASC(C$)),Y(ASC(C$)))-STEP(X2(ASC(C$)),Y2(ASC(C$))),XOR,7,BF
1020 B$=INKEY$:GOSUB *KMODE
1030 IF ER THEN M2(ER)=M2(ER)-1:IF M2(ER)=0 THEN LINE(X(M(ER)),Y(M(ER)))-STEP(X2(M(ER)),Y2(M(ER))),XOR,%10,BF:ER=ER-1
1040 IF B$="" THEN IF T&<253*SP THEN T&=T&+1:GOTO 1020 ELSE 1020
1050 B=ASC(B$):IF B$<>LEFT$(A$,1) THEN LINE(POS(0)*8,CSRLIN*19)-STEP(7,16),PSET,%1,BF:LINE(X(B),Y(B))-STEP(X2(B),Y2(B)),XOR,%10,BF:ER=ER+1:M(ER)=B:M2(ER)=100:IF T&<253*SP THEN T&=T&+1:GOTO 1020 ELSE 1020
1060 T&=255-T&/SP
1070 X=POS(0):Y=CSRLIN:PRINT " ";:SYMBOL(X*8,Y*19),B$,1,1,%T&
1080 T&=0:IF B$=CHR$(13) THEN PRINT
1090 LINE(X(ASC(C$)),Y(ASC(C$)))-STEP(X2(ASC(C$)),Y2(ASC(C$))),XOR,7,BF
1100 IF A$=CHR$(13) THEN 850
1110 IF LEN(A$)=1 THEN A$=CHR$(13) ELSE A$=MID$(A$,2)
1120 GOTO 870
1130 *MODE GET@(568,464)-(639,479),TY
1140 ZSO2=ZSO:ZSO=-(TY(0)<>0)
1150 ZNK2=ZNK:ZNK=-(TY(1)<>0)
1160 RMA2=RMA:RMA=-(TY(6)>30000)
1170 KMD2=KMD
1180 KMD=-(TY(26)=1)-(TY(26)=30785)*2-(TY(26)=16400)*3
1190 KAM2=KAM:KAM=ZSO*16+ZNK*8+RMA*4+KMD
1200 X=POS(0):Y=CSRLIN
1210 LOCATE 70,23:PRINT MD$(ZSO)+MD$(ZNK+2)+MD$(RMA+4)+MD$(KMD+6);
1220 LOCATE X,Y:RETURN
1230 *KMODE GOSUB *MODE
1240 IF ((KAM AND MD) AND 3)=(MD2 AND 3) THEN 1300
1250 IF (MD2 AND 3)=2 THEN Z=3:GOTO 1290
1260 IF (MD2 AND 3)=3 THEN Z=2:GOTO 1290
1270 IF ((KAM AND MD) AND 2)=(MD2 AND 2) THEN Z=1:GOTO 1290
1280 IF (KAM AND 3)=3 THEN Z=2 ELSE Z=3
1290 GOSUB *Z:GOTO *KMODE
1300 IF ((KAM AND MD) AND 4)<>(MD2 AND 4) THEN ZZ=1:Z=2:GOTO 1290
1310 IF ((KAM AND MD) AND 8)<>(MD2 AND 8) THEN Z=4:GOTO 1290
1320 IF ((KAM AND MD) AND 16)<>(MD2 AND 16) THEN Z=5:GOTO 1290
1330 RETURN
1340 *Z LINE(X(256+Z),Y(256+Z))-STEP(X2(256+Z),Y2(256+Z)),XOR,7,BF
1350 IF ZZ THEN LINE(X(262),Y(262))-STEP(X2(262),Y2(262)),XOR,7,BF
1360 D$=INKEY$:GOSUB *MODE:IF KAM=KAM2 THEN 1360
1370 LINE(X(256+Z),Y(256+Z))-STEP(X2(256+Z),Y2(256+Z)),XOR,7,BF
1380 IF ZZ THEN ZZ=0:LINE(X(262),Y(262))-STEP(X2(262),Y2(262)),XOR,7,BF
1390 RETURN
1400 '****** データだよ ****** 半角英字・カナ文字のみ対応
1410 DATA "ASDF JKL;","ABCDEFGHIJKLMNOPQRSTUVWXYZ"
1420 DATA "アイウエオ カキクケコ サシスセソ タチツテト ナニヌネノ ハヒフヘホ マミムメモ ヤユヨ ラリルレロ ワン"
1430 DATA "コノプログラムハ Basicデ ツクラレテイマス"
1434 DATA "ハンカクアルファベット カタカナニ タイオウシテイマス"
1440 DATA ""